package com.kh.pajx.sop.domain;

import java.util.List;

/**
 * 封装分页信息的实体类
 * 分页功能中一页的信息
 * @author:	azzcsimp
 * @Createdate:	2014年6月20日 下午2:29:16
 */
public class PageBean {

	/** 本页的数据列表 */
	private List recordList;

	/** 当前页 */
	private int currentPage;

	/** 总页数 */
	private int pageCount;

	/** 每页显示多少条 */
	private int pageSize;

	/** 总记录数 */
	private int recordCount;

	/** 页面列表的开始索引 */
	private int beginPageIndex;

	/** 页码列表的结束索引 */
	private int endPageIndex;
	
	/** 页码区间 */
	private int pageNumShown = 10;

	
	/**
	 * 只接受前4个必要的属性，会自动的计算出其他3个属生的值
	 * @param currentPage 当前页
	 * @param pageSize 每页显示多少条记录
	 * @param recordCount 总记录数
	 * @param recordList 本页的数据列表
	 * @author: azzcsimp
	 * @Createdate: 2014年6月12日 下午3:58:01
	 */
	public PageBean(int currentPage, int pageSize, int recordCount,
			List recordList) {
		this.currentPage = currentPage;
		this.pageSize = pageSize;
		this.recordCount = recordCount;
		this.recordList = recordList;

		// 计算总页码
		pageCount = (recordCount + pageSize - 1) / pageSize;

		// 计算 beginPageIndex 和 endPageIndex
		// >> 总页数不多于10页，则全部显示
		if (pageCount <= 10) {
			beginPageIndex = 1;
			endPageIndex = pageCount;
		}
		// >> 总页数多于10页，则显示当前页附近的共10个页码
		else {
			// 当前页附近的共10个页码（前4个 + 当前页 + 后5个）
			beginPageIndex = currentPage - 4;
			endPageIndex = currentPage + 5;
			// 当前面的页码不足4个时，则显示前10个页码
			if (beginPageIndex < 1) {
				beginPageIndex = 1;
				endPageIndex = 10;
			}
			// 当后面的页码不足5个时，则显示后10个页码
			if (endPageIndex > pageCount) {
				endPageIndex = pageCount;
				beginPageIndex = pageCount - 10 + 1;
			}
		}
	}

	// ==========================================

	public int getCurrentPage() {
		return currentPage;
	}

	public List getRecordList() {
		return recordList;
	}

	public void setRecordList(List recordList) {
		this.recordList = recordList;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getRecordCount() {
		return recordCount;
	}

	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}

	public int getBeginPageIndex() {
		return beginPageIndex;
	}

	public void setBeginPageIndex(int beginPageIndex) {
		this.beginPageIndex = beginPageIndex;
	}

	public int getEndPageIndex() {
		return endPageIndex;
	}

	public void setEndPageIndex(int endPageIndex) {
		this.endPageIndex = endPageIndex;
	}

	public int getPageNumShown() {
		return pageNumShown;
	}

	public void setPageNumShown(int pageNumShown) {
		this.pageNumShown = pageNumShown;
	}

	
}
